#!/bin/sh
TMP=/var/log/setup/tmp
if [ ! -d $TMP ]; then
  mkdir -p $TMP
fi
MOUNT=/tag
mkdir -p $MOUNT
dialog --title "CREATE CUSTOM TAGFILES" --yesno "Tagfiles are special files \
found on the first disk of a series that can determine which packages are \
installed and which are skipped.  Deciding which files to install in advance \
can speed up the installation process greatly.  If you have not installed \
Draco before, you should probably try installing using the \
default tagfiles before you try making custom ones, because you won't see much \
information about the package contents when creating your tagfiles.  This \
process assumes you already know which packages you want to install.  \
If you're not sure, back out now and just use the default tagfiles when \
you install.  \
Do you want to create custom tagfiles?" 17 65
if [ ! $? = 0 ]; then
 exit
fi
dialog --title "ENTER CUSTOM TAGFILE EXTENSION" --inputbox "Now you must \
enter a custom file extension.  This will be used as the last part of the \
filename for your new custom tagfiles.  For example, I use '.pat' for my \
custom extension, and my custom tagfiles on the first disk of each series \
have the filename 'tagfile.pat'.  Use any extension you like except .tgz or \
.tar.  The extension must consist of a period followed by exactly 3 \
letters." 14 65 2> $TMP/SeTtagmake
if [ ! $? = 0 -o ! "`cat $TMP/SeTtagmake | cut -b1`" = "." -o "`cat $TMP/SeTtagmake`" = "" ]; then
 rm -f $TMP/SeTtagmake
 exit
fi
TAGEXT="`cat $TMP/SeTtagmake`"
dialog --title "USE EXPERT MENUS?" --menu "If you like, you may select your \
packages from expert menus.  Where the normal menu shows a choice like 'C \
compiler system', the expert menus show you 'C libs', 'C compiler', 'C \
include files', etc -- each individual package.  Obviously, you should \
know what you're doing if you use the expert menus since it's possible \
to skip packages that are crucial to the functioning of a subsystem." \
15 65 2 \
"normal" "Use normal menus that select groups of packages" \
"expert" "Use expert menus with a switch for each package" 2> $TMP/SeTreturn
if [ ! $? = 0 ]; then
 rm -f $TMP/SeTreturn
 exit
fi
MENU="`cat $TMP/SeTreturn`"
rm -f $TMP/SeTreturn
if [ "$MENU" = "normal" ]; then
 MAKETAG="maketag.ez"
else
 MAKETAG="maketag"
fi
while [ 0 ]; do
 dialog --title "CUSTOMIZE A DISK SERIES" --menu "You may now \
create a custom tagfile on the first disk of a disk series (make \
sure it's not write protected!), or in the directory for such a \
disk if you are installing from your hard drive.  Select one of the \
choices below." 13 65 3 \
"/dev/fd0" "Create a custom tagfile on floppy drive 1" \
"/dev/fd1" "Create a custom tagfile on floppy drive 2" \
"Directory" "Create a tagfile in a disk's directory" 2> $TMP/SeTreturn
 if [ ! $? = 0 ]; then
  rm -f $TMP/SeTreturn
  break
 fi
 CHOICE="`cat $TMP/SeTreturn`"
 rm -f $TMP/SeTreturn
 if [ "$CHOICE" = "/dev/fd0" -o "$CHOICE" = "/dev/fd1" ]; then
  dialog --title "INSERT DISK IN DRIVE $CHOICE" --msgbox "Please insert the first disk of \
a disk series you would like to make a custom tagfile for and press \
ENTER.  Be sure this disk is not write protected." 7 60
  if [ ! $? = 0 ]; then
   continue
  fi
  mount $CHOICE $MOUNT -t msdos
  if [ ! $? = 0 ]; then
   dialog --title "MOUNT FAILURE" --msgbox "Sorry, the disk could not be \
mounted in drive $CHOICE as type msdos." 6 60
   umount $MOUNT 2> /dev/null
   continue
  fi
  if [ -r $MOUNT/$MAKETAG -o $MOUNT/maketag ]; then
   if [ -r $MOUNT/$MAKETAG ]; then
    sh $MOUNT/$MAKETAG
   else
    sh $MOUNT/maketag
   fi
  else # no tagfile create script!
   dialog --title "NO TAGFILE SCRIPT" --msgbox "Sorry, but a custom tagfile \
cannot be created for this disk because it does not have a 'maketag' script.  \
The maketag script was introduced in Slackware 1.1.2, and provides the menu \
of packages to select from.  Currently there is no way to just look at the \
disks and 'wing it', but maybe there will be eventually.  You'll have to edit \
the tagfile on this disk manually." 11 65
   umount $MOUNT
   continue 
  fi
  if [ ! -r $TMP/SeTnewtag ]; then
   umount $MOUNT
   continue
  fi
  cp $TMP/SeTnewtag $MOUNT/tagfile$TAGEXT
  if [ $? = 0 ]; then
   dialog --title "TAGFILE CREATED" --msgbox "Your custom \
tagfile has been successfully created with the extension: \
$TAGEXT" 8 40
  else
   dialog --title "COPY ERROR" --msgbox "Your custom tagfile could \
not be copied to the disk.  Please check to see if the disk is write \
protected, or full, and then try again." 9 40
  fi
  umount $MOUNT
 fi
 if [ "$CHOICE" = "Directory" ]; then
  dialog --title "CHOOSE DIRECTORY" --inputbox "Now you must enter the \
directory for the first disk of the series for which you would like to \
make a custom tagfile.  This directory must be mounted somewhere under \
the current filesystem." 11 65 2> $TMP/SeTreturn
  if [ ! $? = 0 ]; then
   rm -f $TMP/SeTreturn
   continue
  fi
  DIR="`cat $TMP/SeTreturn`"
  rm -f $TMP/SeTreturn
  if [ ! -r $DIR/maketag -a ! -r $DIR/$MAKETAG ]; then
   dialog --title "NO TAGFILE SCRIPT" --msgbox "Sorry, but a custom tagfile \
cannot be created for this disk series because the directory you gave does \
not have a 'maketag' script.  \
The maketag script was introduced in Slackware 1.1.2, and provides the menu \
of packages to select from.  Currently there is no way to just look at the \
packages and 'wing it', but maybe there will be eventually.  You'll have to \
edit the tagfile in this directory manually." 11 65
   continue
  fi
  if [ -r $DIR/$MAKETAG ]; then
   sh $DIR/$MAKETAG
  else
   sh $DIR/maketag
  fi
  if [ ! -r $TMP/SeTnewtag ]; then
   continue
  fi
  cp $TMP/SeTnewtag $DIR/tagfile$TAGEXT
  if [ $? = 0 ]; then
   dialog --title "TAGFILE CREATED" --msgbox "Your custom \
tagfile has been successfully created with the extension: \
$TAGEXT" 8 40
  else
   dialog --msgbox "I don't know what just happened, but something \
screwed up." 6 40
  fi
 fi
done
